# -*- coding: utf-8 -*-
"""
Created on Sun Apr 22 15:34:49 2018
@author: mfw
"""
import requests
import codecs
from bs4 import BeautifulSoup

f = codecs.open('csdn.txt', 'w', 'utf-8')


# 这个方法用来将infomation写入文件
def showtitle(url):
    # 发出请求得到返回对象，如果req.status_code是200，说明访问成功
    req = requests.get(url)
    # 将网页的源码以HTML模式建立节点树，以便我们在树上寻找元素
    bs = BeautifulSoup(req.content, 'html.parser')
    # find_all()方法可以找出所有的li标签，因为文章的链接等信息就藏在这里
    li_title = bs.find(string="<h4 class="">")  # u'Elsie'

    #li_title = bs.find_all('<h4 class="">', {'class': 'blog-unit'})
    #print(li_title)

    # 从li标签中获取href即文章链接，再发送请求获取文章正文
    for info in li_title:
        url = info.a.get('href')
        req = requests.get(url)
        bs1 = BeautifulSoup(req.content, 'html.parser')
        title = bs1.find('h1')
       # print(title)
        text = title.text+u'\n'
        f.write(str(text))
        # f.close()
    return bs


# start
# 研究csdn主页新闻可发现其页面URL是由规律的，第一页是xxx，第二页就是xxx/list/2
# 所以我们可以通过这种方式来生成一系列页面的URL序列
URL = 'https://blog.csdn.net/blogdevteam'
BS = showtitle(URL)
for i in range(2, 28):
    u = 'https://blog.csdn.net/blogdevteam/article/list/'+str(i)
    b = showtitle(u)
    print("The progress of the crawler:"+str(i*100/27)+'%')
print "Done!"